package org.wupgame.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.wupgame.model.e.Config;
import org.wupgame.model.e.Direction;
import org.wupgame.model.e.DrawType;

import java.util.ArrayList;

/**
 * 房间类，用于存储游戏房间相关信息 包含玩家列表、回合信息、牌组状态等
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RoomState {
	private String id;            // 房间唯一标识符
	private ArrayList<Player> players;     // 房间中的玩家数组
	private int turnIndex;        // 当前回合玩家的索引
	private int turnCount;        // 当前回合数
	private Direction direction;  // 游戏进行方向（顺时针/逆时针）
	private ArrayList<Card> deck;          // 牌组，存放未发的牌
	private ArrayList<Card> discard;       // 弃牌堆，存放已经打出的牌
	private int pendingDraw;      // 待抽牌数量，用于特殊规则下的连续抽牌
	private DrawType drawType;    // 抽牌类型，用于指定特殊抽牌规则
	private Card lastCard;        // 最后一张打出的牌
	private Long lastActionPlayer;// 最后执行操作的玩家ID
	private ArrayList<Config> configs;     // 游戏配置数组，包含各种游戏规则设置
	private boolean AwaitingChallenge;// 是否处于质疑状态，用于特殊规则下的质疑
	private Long lastWildDrawPlayer;// 上一个出+4的玩家
	private boolean isEnd;          // 是否结束
}
